Systems, apparatuses, and methods for generating inventory recommendations

ABSTRACT

Disclosed are systems, methods, and devices for managing a personal user inventory. In one embodiment, the method comprises retrieving a plurality of e-mail messages associated with a user; parsing the plurality of e-mail messages to identify a set of merchandise items present within the plurality of e-mail messages; associating the set of merchandise items with the user in an item database; receiving a request for an item recommendation from the user; identifying one or more recommended items associated with the user in the item database responsive to the request; and transmitting the recommended items to the user for display.

CLAIM OF PRIORITY

The present application claims priority to Prov. U.S. Pat. App. Ser. No.62/449,184, filed Jan. 23, 2017 and entitled “Inventory ManagementSystems and Methods”, the entire disclosure of which application ishereby incorporate herein by reference.

COPYRIGHT NOTICE

This application includes material that may be subject to copyrightprotection. The copyright owner has no objection to the facsimilereproduction by anyone of the patent disclosure, as it appears in thePatent and Trademark Office files or records, but otherwise reserves allcopyright rights whatsoever.

BACKGROUND Technical Field

The embodiments disclosed herein relate to the field of inventorymanagement and, specifically, to the fields of identifying recommendedinventory items.

Description of the Related Art

With the rise of electronic commerce (“e-commerce”) customers areincreasingly purchasing more items via websites, mobile applications,and other networked applications. Generally, current systems allow usersto place orders and manage their orders (e.g., initiate returns, trackpackages, etc.). Thus, with current systems users may perform allaspects of online shopping that previously were limited to in-store andin-person interactions. Notably however, while current systemsfacilitate e-commerce, these systems suffer from numerous deficiencies.

Many current systems are, in general, isolated “silos” of information.Users are required to maintain accounts at individual merchants or withindividual websites and are thus, unable to centrally manage itemspurchased online or “mix and match” purchases from different retailers.While some systems attempt to remedy this deficiency, these systemsrequire users to proactively manage their own purchases (e.g., informingthe system of purchases by, for example, searching for or uploadingdetails regarding purchases).

Current systems fail to utilize the existing flows of informationregarding the purchases of a user. Specifically, e-commerce orders arenearly universally associated with email messages. For example, usersreceive email messages when purchasing an item, when trackingdeliveries, and when returning items. Additionally, a user's emailaccount acts as “funnel” for all the user's purchases and is not limitedto a single merchant or website. Thus, a user's email account acts as arich source of information regarding e-commerce activity. Nevertheless,current systems generally do not leverage this source of information toenhance user experience.

BRIEF SUMMARY

The disclosed embodiments describe systems, methods, and devices forproviding management of a user inventory based on email messagesreceived by the user.

In one embodiment, the method comprises retrieving a plurality of e-mailmessages associated with a user; parsing the plurality of e-mailmessages to identify a set of merchandise items present within theplurality of e-mail messages; associating the set of merchandise itemswith the user in an item database; receiving a request for an itemrecommendation from the user; identifying one or more recommended itemsassociated with the user in the item database responsive to the request;and transmitting the recommended items to the user for display.

In another embodiment, an apparatus is disclosed which comprises one ormore processors; and a non-transitory memory storing computer-executableinstructions therein that, when executed by the processor, cause theapparatus to perform the operations of retrieving a plurality of e-mailmessages associated with a user; parsing the plurality of e-mailmessages to identify a set of merchandise items present within theplurality of e-mail messages; associating the set of merchandise itemswith the user in an item database; receiving a request for an itemrecommendation from the user; identifying one or more recommended itemsassociated with the user in the item database responsive to the request;and transmitting the recommended items to the user for display.

The preceding features, and others, are described more fully herein.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other objects, features, and advantages of thedisclosure will be apparent from the following description ofembodiments as illustrated in the accompanying drawings, in whichreference characters refer to the same parts throughout the variousviews. The drawings are not necessarily to scale; emphasis instead beingplaced upon illustrating principles of the disclosure.

FIG. 1A is a system diagram illustrating a system for parsing useremails and extracting merchandise according to some embodiments of thedisclosure.

FIG. 1B is a system diagram illustrating a system for managing a userwardrobe according to some embodiments of the disclosure.

FIG. 2A is a flow diagram illustrating a method of extracting items ofmerchandise from a user email account according to some embodiments ofthe disclosure.

FIG. 2B is a flow diagram illustrating a method of parsing an emailmessage to extract items of merchandise according to some embodiments ofthe disclosure.

FIG. 2C is a flow diagram illustrating a method of augmenting andstoring items of merchandise according to some embodiments of thedisclosure.

FIG. 3A is a flow diagram illustrating a method of recommending items ofmerchandise based on a collection of user merchandise according to someembodiments of the disclosure.

FIG. 3B is a flow diagram illustrating a method of recommending items ofmerchandise based on a style guide according to some embodiments of thedisclosure.

FIG. 3C is a flow diagram illustrating a method of generating outfitsaccording to some embodiments of the disclosure.

FIG. 3D is a flow diagram illustrating a method of completing an outfitaccording to some embodiments of the disclosure.

FIG. 3E is a flow diagram illustrating a method of generating an outfitaccording to some embodiments of the disclosure.

FIG. 4 is a flow diagram illustrating a method of categorizing anextracted item of merchandise according to some embodiments of thedisclosure.

FIG. 5A is a flow diagram illustrating a method of converting an imageto a structured representation of an item of merchandise according tosome embodiments of the disclosure.

FIG. 5B is a flow diagram illustrating a method of processing an imageof an item receipt according to some embodiments of the disclosure.

FIG. 6 is a flow diagram illustrating a method of extracting purchasesof users from third-party merchants according to some embodiments of thedisclosure.

FIGS. 7A and 7B are flow diagrams illustrating methods of automaticallydetecting returned merchandise by parsing a user email account accordingto some embodiments of the disclosure.

FIG. 8 is a flow diagram illustrating a method of recommending on-saleitems to users by parsing user wardrobes according to some embodimentsof the disclosure.

FIG. 9 is a flow diagram illustrating a method of automaticallyinitiating the return of merchandise according to some embodiments ofthe disclosure.

FIG. 10 is a flow diagram illustrating a method of automaticallydetecting price adjustments of merchandise according to some embodimentsof the disclosure.

FIG. 11 is a flow diagram illustrating a method of facilitating savingof merchandise from third-party webpages according to some embodimentsof the disclosure.

FIG. 12 is a flow diagram illustrating a method of recommending productsbased on weather forecasts according to some embodiments of thedisclosure.

FIG. 13A is a flow diagram illustrating a method of facilitating thepurchase of merchandise by re-commerce entities according to someembodiments of the disclosure.

FIG. 13B is a flow diagram illustrating a method for providing apeer-to-peer marketplace according to some embodiments of thedisclosure.

FIG. 14 is a flow diagram illustrating a method of tracking packagesaccording to some embodiments of the disclosure.

FIG. 15 is a flow diagram illustrating a method for providing auniversal shopping cart according to some embodiments of the disclosure.

DETAILED DESCRIPTION

The present disclosure will now be described more fully hereinafter withreference to the accompanying drawings, which form a part hereof, andwhich show, by way of illustration, certain example embodiments.

FIG. 1A is a system diagram illustrating a system for parsing useremails and extracting merchandise according to some embodiments of thedisclosure.

As illustrated in FIG. 1A, a system 100 a includes a client device 102,a network 104, an application server 106, an authentication endpoint108, a database of users 110, a mail server 112, a database of emailmessages 114, a mail queue 116 including a plurality of jobs 116 a-n, aninbox processor including a plurality of agents 118 a-n, a configurationdatabase 120, third party data database 122, items database 124, and logdatabase 126.

In the illustrated embodiment, a client device 102 issues requests toapplication server 106 via network 104. In some embodiments, clientdevice 102 may comprise a desktop computer, laptop computer, tabletdevice, mobile phone, or other computing device. Various types ofrequests between client device 102 and application server 106 arediscussed herein including login requests and wardrobe requests. Network104 may comprise a network such as the Internet. In one embodiment,client device 102 can communicate with application server 106 vianumerous protocols including, for example, HTTP. In some embodiments,application server 106 may comprise one or more web servers.

Application server 106 is communicatively coupled to authenticationendpoint 108. In one embodiment, authentication endpoint 108 maycomprise a service provider that stores user details in user database110. For example, authentication endpoint 108 may comprise a web service(e.g., Gmail) with whom a user maintains a user account. Authenticationendpoint 108 may provide an API allowing access to user account detailswith the proper user credentials. Authentication endpoint 108 may allowusers to “sign in” to third party sites using a protocol such as OAuth.

Authentication endpoint 108 is connected to mail server 112 and mayprovide access to a user's mail in mail database 114 via a second, orthe same, API. In one embodiment, authentication endpoint 108 and mailserver 112 may be owned or operated by the same entity. In manyembodiments authentication endpoint 108 and mail server 112 may bedistributed across many servers.

Application server 106 may be configured to authenticate users andretrieve user emails as described more fully in connection with FIGS.2A-C. Application server 106 may additionally be configured to place oneor more jobs 116 a-n into mail queue 116 for further processing asdescribed more fully in connection with FIGS. 2A-C. In one embodiment,mail queue 116 may be connected to application server 106 via a networksuch as the Internet or an internal LAN and may comprise a dedicated orvirtualized server device. In one embodiment, a job 116 a-n may includeone or more emails received from authentication endpoint 108 as well asuser details (e.g., a token) retrieved during the authenticationprocess. In alternative embodiments, a job 116 a-n may only include userdetails.

Mail queue 116 may be configured to transmit jobs to inbox processor118. In some embodiments, mail queue 116 may issue a single job at atime to inbox processor 118. Alternatively, mail queue 116 may transmitmultiple jobs to inbox processor 118. In some embodiments, inboxprocessor 118 may comprise a server-less computing system. In oneembodiment, jobs 116 a-n sent to inbox processor 118 may compriseindividual processes or threads running on a server system. In someembodiments, each job 116 a-n running on inbox processor 118 may includeits own dedicated physical or virtual resources (e.g., CPU, memory,etc.).

Inbox processor 118 may include one or more running agents 118 a-ncreated using an agent configuration retrieved from configurationdatabase 120. Each agent may be configured to process one or more emailsstored within a job 116 a-n that was sent to inbox processor 118 andextract items of merchandise, as described more fully herein.Alternatively, an agent 118 a-n may be configured to retrieved emailmessages from mail server 112 via a user token included with the job 116a-n.

Additionally, each agent 118 a-n may be configured to retrieveinformation regarding the extracted items from third party data 122. Inone embodiment, third party data 122 may comprise a remote, thirdparty-operated service that can provide details regarding items ofmerchandise via one or more APIs.

Agents 118 a-n may additionally be configured to transmit item detailsto items collection 124. In one embodiment, items collection 124 maycomprise a relational or NoSQL database. Although not illustrated, thesystem 100 a may include various other databases as discussed herein.For example, the system 100 a may include a products data for storingcanonical products. Additionally, the system 100 a includes a logsdatabase that stores logs generated by agents 118 a-n during processing.

FIG. 1B is a system diagram illustrating a system for managing a userwardrobe according to some embodiments of the disclosure.

As illustrated in FIG. 1A, a system 100 b includes a client device 102,a network 104, an application server 106, a recommendation engine 128,category processor 130, label processor 132, crawler 134, returnprocessor 136, sale processor 138, marketplace processor 140, andtracking processor 142. As illustrated application server 106 may issuesrequests to various devices 128-142.

Recommendation engine 128 may comprise one or more application serversconfigured to receive a request for recommendations from a user via theapplication server 106. Recommendation engine 128 may perform themethods described in connection with FIGS. 3A through 3E and 12.

Category processor 130 may comprise one or more application serversconfigured categorize items received from the application server 106.Category processor 130 may perform the methods described in connectionwith FIG. 4.

Label processor 132 may comprise one or more application serversconfigured to receive a request for labelling from the applicationserver 106. Label processor 132 may perform the methods described inconnection with FIG. 5.

Crawler 134 may comprise one or more application servers configured toreceive a request for product details from the application server 106.Crawler 134 may perform the methods described in connection with FIG. 6.

Return processor 136 may comprise one or more application serversconfigured to receive a request to identify return items from theapplication server 106. Return processor 136 may perform the methodsdescribed in connection with FIGS. 7A through 7B and 9.

Sale processor 138 may comprise one or more application serversconfigured to monitor items for sales and/or price adjustments. Saleprocessor 138 may perform the methods described in connection with FIGS.8 and 10.

Marketplace processor 140 may comprise one or more application serversconfigured to provide e-commerce functionality to application server106. Marketplace processor 140 may perform the methods described inconnection with FIGS. 13 and 15.

Tracking processor 142 may comprise one or more application serversconfigured to provide tracking updates to users via application server106. Tracking processor 142 may perform the methods described inconnection with FIG. 14.

Although the devices 128-142 are illustrated as singular devices, eachdevice 128-142 may comprise multiple servers located in geographicdistinct locations.

FIG. 2A is a flow diagram illustrating a method of extracting items ofmerchandise from a user email account according to some embodiments ofthe disclosure.

In step 2102, the method authenticates a user.

Authenticating a user may comprise executing an OAuth workflow with aremote provider of a user account. In some embodiments, a provider of auser account may comprise an email provider such as Google (Gmail),Yahoo! (Yahoo Mail), Verizon Communications (AOL Mail), or Microsoft(Outlook). Alternatively, the user account provider may comprise anyprovider providing email via protocols such as IMAP, POP, etc. In someembodiments, authentication of a user may be performed multiple timesfor multiple email addresses (e.g., from different or the same provider)owned or operated by a user. In some embodiments, other authenticationschemes other than OAuth may be utilized to authenticate a user. In someembodiments, authenticating a user may comprise receiving an accesstoken to access the user account at a later date.

In step 2104, the method retrieves email messages associated with theauthenticated account.

In some embodiments, retrieving email messages may comprise requestingemail messages from the email provider via an application programminginterface (“API”). In some embodiments, the email provider may providean API allowing third-party applications to retrieve email messagesusing one or more defined “endpoints.” In this embodiment, the methodtransmits a request to an endpoint associated with an email account andmay download all or some of the email messages associated with a useraccount.

In one embodiment, the method may retrieve all email messages. Inalternative embodiments, the method may only retrieve messages based ona filter condition. For example, the method may only retrieve emailsincluding certain pre-defined words in the title or from certain senders(e.g., email addresses or domains). In some embodiments, the method maylimit the number of emails retrieve based on a date.

In alternative embodiments, the method may not download messages at step2104 but may download messages as part of a processing job as discussedherein.

In step 2106, the method places a processing job in a processing queue.

In one embodiment, placing a processing job in a queue may comprisecreating a new processing job and associating the processing job withthe email retrieved in step 2104. Alternatively, or in conjunction withthe foregoing, placing a processing job in a processing queue maycomprise generating a job with user account information and a token foraccessing the user's email account.

In step 2108, the method spawns a processing job.

In some embodiments, the method may periodically spawn processing jobsin response to available computing and/or storage resources. Inalternative embodiments, the method may create new computing resourcesin order to spawn a processing job. In some embodiments, processing jobsmay be run using a “server-less” architecture.

In alternative embodiments, step 2104 may be performed as part of step2108. That is, a user's email messages may be downloaded as part of theprocessing job rather than prior to the processing job. In alternativeembodiments, each processing job may only retrieve a portion of theuser's email messages.

In step 2110, the method filters email messages.

In some embodiments, the method may filter the email messages by one ormore filtering criteria to limit the total amount of email to beprocessed. For example, in one embodiment, the method may filter emailsbased on the identity of a sender or by keywords appearing in thesubject line or body of the email. For example, the method may searchthe inbox for all emails with the subject containing: “Receipt,”“purchase”, “order” or “thank you” but not “Free”, “off”, or “coupon.”In some embodiments, the method may filter the email message multipletimes, while in other embodiments the method may perform a singlefiltering pass.

In some embodiments, a processing job may be monitored to improve theefficiency of the processing queue. For example, the method maydetermine whether a processing job can execute within a preset timeperiod (e.g., 300 seconds). If so, the method may schedule a singleprocessing job. Alternatively, if the existing job cannot execute withinthe preset time period, the method may segment the processing job intoadditional “sub-jobs.” In one embodiment, the method may delegatesub-jobs to a processing queue. That is, the method may fork theprocessing job into multiple sub-jobs and place these sub-jobs back intoa processing queue. In one embodiment, the method may immediately runthe sub-jobs instead of placing the sub-jobs in the queue. In someembodiments, the forking of a sub-job comprises selecting a subset of auser's email messages and assigning the subset to a sub-job.

In step 2112, the method parses an email and generates item detailsbased on the email.

In one embodiment, the method parses an email by first selecting anappropriate parser. In some embodiments, the selection of a parser maybe based on the sender email address (or sender email address domain).Alternatively, or in conjunction with the foregoing, the parser may beselected based on the send date of the email due to retailers changingemails over time. In alternative embodiments, the method may use asingle, generic parser to parse all email messages.

In some embodiments, a parser may be associated with a configurationfile which specifies the parser details. In some embodiments, theconfiguration may be stored within a parser database. In one embodiment,the parser configuration may comprise an XSLT transformation that may beapplied to an HTML email and generate an XML representation of themessages as described more fully herein. In alternative embodiments, theparser configuration may comprise a configuration file created usingXPath (e.g., defined paths), plaintext, or JavaScript (e.g., retrievalfunctions). Notably, other technologies may be used provided that theselected technology converts HTML messages to structured itemrepresentations.

In some embodiments, the method may additionally be configured to parseplain-text e-mail message bodies in addition to HTML or other, formattedmessage bodies. In this embodiment, the method may utilize regularexpressions or other comparisons to extract items.

In step 2114, the method supplements the extracted item detail withadditional information.

In some embodiments, the method attempts to add additional detail fromthird party sources to the detail extracted from the email message. Inone embodiment, the method may issues an HTTP request to an API of a webservice that provides information for products or merchandise. Forexample, the method may transmit an item name, SKU number, or otheridentifier to the third party and may receive a structuredrepresentation (JSON, XML, etc.) of the product including images andother product details. In some embodiments, the method may require theretrieval of a category name or category number(s) from the third party.In some embodiments, the method may also identify a hexadecimal colorassociated with item by analyzing pixels of one or more picturesassociated with the item.

In step 2116, the method stores the item.

In one embodiment, storing the item may comprise inserting the detailsof the item into a user wardrobe collection or table of a database. Insome embodiments, the method may additionally check to ensure that theitem is not a duplicate of a previously stored item. In someembodiments, the method may additionally store logs relating to theaforementioned processing steps.

In some embodiments, the method may additionally allow a user to viewtheir wardrobe(s) of items and create outfits using items from thewardrobe. The method may additionally allow the user to save outfits. Insome embodiments, the method allows the user to purchase items frommerchants and/or add merchant items to a wishlist. In some embodiments,the method allows users to share items with friends, stylists, personalshoppers, etc., via email, SMS, or other means.

In some embodiments, the method may additionally add the item to acollection of products. In this embodiment, the method may use twocollections: one for user items and one for all items. That is, acollection for items and a collection for items associated with users(and associated with the canonical items).

In some embodiments, the above method may be run once on all user emailswhen a user registers with a website or web application. Alternatively,or in conjunction with the foregoing, the method may be run periodicallyafter user registration.

In some embodiments, the method may additionally support multiple“closets.” In one embodiment, a closet corresponds to a definedprojection of all or part of a user's wardrobe inventory. For example, auser may have a closet for work clothing, exercise clothing, certainevent types, etc. In a first embodiment, the method may simply place allextracted items into a single, default closet.

Alternatively, or in conjunction with the foregoing, the method may alsoautomatically sort items into additional closets. In one embodiment, themethod may ask the user if he or she wishes to create a new closet. Ifso, the method receives a type for the closet (e.g., child, baby,partner, etc.). Upon receiving a type the method may scan the extracteditems and identify those items matching the closet type. For example,the method may identify categories that are related to the closet type.

The method may then present the new closet with items to the user forreview and approval, denial, or modification. Finally, the method maycreate the closet and add the approved items to the closet.

In some embodiments, the method may additionally allow the user todefine rules for placing items in separate closets. In one embodiment,the rules may be based on assigning a sender email address to thecloset. In alternative embodiments, the rules may be based on keywordspresent within the email message or subject line. In alternativeembodiments, the rules may be based on identifying a particular store.In alternative embodiments, the rules may be based on the size of theitems (e.g., children versus adults). In some embodiments, the rules maybe based on detecting a forwarded email including the closet name in thesubject line. In some embodiments, machine learning may be utilized torefine rules based on the manual sorting operations performed by theuser. That is, since items are associated with email messages, themethod may detect a manual user operation and inspect the email messageto determine if a rule should be created or modified based on thecontent of the email message.

FIG. 2B is a flow diagram illustrating a method of parsing an emailmessage to extract items of merchandise according to some embodiments ofthe disclosure.

In step 2202, the method extracts an email body. As discussedpreviously, the method may receive an email message including metadataand content. In one embodiment, the method first extracts the body fromthe message (e.g., an HTML portion of the email messages).

In step 2204, the method identifies the appropriate agent. In someembodiments, multiple agents may be associated with individualmerchants. In alternative embodiments, agents may be assigned tospecifically formatted email messages. For example, a first agent may beassigned to a first email (e.g., a receipt) sent by a merchant whereas asecond agent may be assigned to a second email (e.g., a shipment notice)sent by a merchant. In some embodiments, an agent may include orcomprise a parser as described previously.

In step 2206, the method parses the email body with the identifiedagent.

In one embodiment, the method may utilize an XSLT transform to convertthe HTML body of the email to a structured format (e.g., XML). As knownin the art, XSLT is a technology designed to, among other things,convert structured documents of one form to another. In the process,XSLT transforms allow for the selection and exclusion of elements of theoriginal document.

In some embodiments, an XSLT transform may be created for each emailtemplate or each merchant. In some embodiments, the XSLT transform mayinclude instructions identifying where the details of an item appearwithin an email body and instructions for extracting and processingthese items. In some embodiments, the XSLT file may utilize attributesof the HTML element in the email body, or may utilize the hierarchalstructure of the email body to extract item details. In someembodiments, the XSLT transform may include hardcoded values to be usedin the output document. For example, the XSLT transform may include ahardcoded store name or store identifier.

In some embodiments, XSLT transforms may be stored by a server on disk(e.g., as XML files). Alternatively, XSLT transforms may be storedwithin a database. In some embodiments, a database may include akey-value storage (or similar arrangement) to associate item fields(e.g., name, SKU, brand, product URL, product image(s), price, size,order number, order date, etc.) with selectors (e.g., the value of the“select” attribute of the “xsl:value-of” element). Additionally, thedatabase may store other fields needed to generate a complete XSLTtransform. In some embodiments, the method may be configured toautomatically build the XSLT based on the values stored in the database.For example, the method may first query for a first selector indicatinghow to find products (e.g., using an “xsl: for-each” element) and thenquery for each of the individual field selectors. The method may thencombine these into an XSLT transform.

In alternative embodiments, parsing an email may comprise usingJavaScript to extract portions of the email using DOM parsingtechniques. For example, the agent may utilize one or more functioncalls that utilize methods to retrieve elements of the HTML email andextract the inner HTML or inner text of the HTML elements.

In alternative embodiments, the parsing an email may comprise evaluatinga plurality of XPath expressions to identify elements within the HTMLbody and extract the inner HTML or inner text of the HTML elements. Inalternative embodiments, the agent may utilize regular expressions toidentify item details.

In step 2208 selects a parsed item and, in step 2210, saves the item. Inone embodiment, saving the item may comprise inserting the details ofthe item into a user wardrobe collection or table of a database. In someembodiments, the method may additionally check to ensure that the itemis not a duplicate of a previously stored item. In some embodiments, themethod may additionally store logs relating to the aforementionedprocessing steps.

In step 2212, the method determines if any items are remaining and if sorepeats steps 2208 and 2210 for the remaining items.

FIG. 2C is a flow diagram illustrating a method of augmenting andstoring items of merchandise according to some embodiments of thedisclosure.

In step 2302, the method receives an extracted item. In the illustratedembodiment, the extracted item may comprise an item extracted from anemail message as described in FIGS. 2A and 2B, the disclosure of whichis incorporated herein by reference in its entirety.

In step 2304, the method determines if a pre-existing product hasalready been added to a canonical collection of products.

In some embodiments, if the method determines that a pre-existingproduct has already been added to a canonical collection of products,the method may simply associate the extracted item with the existingproducts. Thus, the method in this case would not have to perform steps2306, 2308, 2312, and 2314. In some embodiments, the method may utilizean identifier of a product associated with an item to determine if theproduct is pre-existing.

In step 2306, the method queries for existing products. The methodreaches step 2306 upon determining that the item includes a product thathas not been previously processed by the method. In this case, themethod may transmit an HTTP request to a third party source of productinformation.

In step 2308, the method determines if the third party has any productsmatching the item. In some embodiments, the third party may not includeany details regarding the product included in the item. In this case,the method would continue to add the item to the user collection, butwould bypass the creation of a new, canonical product.

In step 2312, in contrast, the method retrieves product detailsassociated with the item if the third party identifies a product thatmatches the item. As discussed previously, product details may includedetails such as a name, SKU, brand, product URL, product image(s),price, and/or size associated with the product. In some embodiments, themethod may receive the product details during the querying step (2306).In alternative embodiments, the method may separately retrieve theproduct details by issuing a second request.

In step 2314, the method creates a new product using the productdetails. In some embodiments, the method may add the item to acollection of products. In this embodiment, the method may use twocollections: one for user items and one for all items. That is, acollection for items and a collection for items associated with users(and associated with the canonical items). Thus, in step 2314, themethod first saves the product to a products collection in order totrack individual products (regardless of their association withparticular users).

In step 2310, the method adds the item to a user collection. In oneembodiment, adding an item to a user collection may comprise insertingthe details of the item into a user wardrobe collection or table of adatabase. In some embodiments, the method may additionally check toensure that the item is not a duplicate of a previously stored item. Insome embodiments, the method may additionally store logs relating to theaforementioned processing steps.

FIG. 3A is a flow diagram illustrating a method of recommending items ofmerchandise based on a collection of user merchandise according to someembodiments of the disclosure.

In step 3102, the method retrieves a list of candidate items. In oneembodiment, the candidate items may comprise a listing of items the userdoes not have in his or her wardrobe. In some embodiments, the candidatelist may be generated based on popular items detected by the method(e.g., via scraping other user accounts, via popular shopping websites,etc.). Alternatively, or in conjunction with the foregoing, thecandidate items may be items on a user's wishlist or similar to items auser owns.

In step 3104, the method compares a user's items to the list ofcandidate items. In some embodiments, the method may additionally filtera user's items to only identify a subset of the items. For example, thecandidate items may be associated with a theme (e.g., “summer clothing”or “handbags”). In this embodiment, the method may limit the user'sitems selected to those matching the same theme as the candidate items.

In step 3106, the method identifies one or more recommended items. Inone embodiment, the method compares a listing of user items to therecommended items and identifies items in the recommended items that arenot already identified in the list of user items. In this manner, themethod can identify items that may be of interest to the user and arealso popular (as indicated by their inclusion in the candidate list).

In step 3108, the method extracts a user's preferences. In oneembodiment, the method may utilize item preferences saved by the user.For example, a user may save preferences related to the color, style,brand, or other attribute of a piece of merchandise such as clothing.

In step 3110, the method identifies supplemental items based on theuser's preferences.

In one embodiment, the method may supplement the candidate items basedon items related to the user's preferences. For example, the method mayidentify a favorite brand of the user and identify other brands that arecurrently popular with similar users. In this manner, the method mayutilize a second listing of popular attributes (e.g., brands, colors,styles, item types etc.) and compare the list to the user's preferences.

In alternative embodiments, the method may additionally supplement thelist of candidate items with items from other users' wardrobes. Forexample, the method may select a user having a similar wardrobe to theselected user (or having a similar wardrobe to the candidate items) andmay use the other user's wardrobe to generate a list of candidate items.Next, the method may identify those items in the other user's wardrobethat do not appear in the selected user's wardrobe and may identify themissing items as recommended items.

In step 3112, the method receives user interactions with the recommendeditems.

In one embodiment, the method displays user items to a user for review.In one embodiment, the method may display a grid, list, or otherrepresentation of the items. In one embodiment, the display may comprisea website or mobile application. In some embodiments, the display mayadditionally provide links for purchasing or viewing more detailregarding the items. In some embodiments, a user may interact with alisting of recommended items in a variety of ways. For example, the usermay click a hyperlink associated with a recommended item, purchase anitem, “favorite” or “save” an item, “discard” an item, or otherwiseindicate a preference (positive or negative) for one of the recommendeditems.

In step 3114, the method enhances the recommendation process (describedpreviously) based on the user interactions.

In one embodiment, the method may monitor the aforementioned userinteractions with the recommended items. For example, the method maymonitor a user's mouse, hover, or touch activity with a displayed itemto determine the level of interest in an item. By monitoring a user'sinteractions the method may modify the selection process of recommendeditems in order to refine the recommendations in future applications ofthe method.

FIG. 3B is a flow diagram illustrating a method of recommending items ofmerchandise based on a style guide according to some embodiments of thedisclosure.

In step 3202, the method retrieves style guides. In one embodiment, astyle guide may comprise a structured listing of products published orotherwise provided by a merchant such as brand, retailer, manufacturer,or other entity responsible for making or selling products. In someembodiments, the style guide may include a listing of items includingidentifiers such as SKU numbers.

In step 3204, the method identifies seasonal keywords. In someembodiments, the method may perform a search on the style guides toidentify keywords indicative of a trend. In some embodiments, the methodmay use various techniques (e.g., TF-IDF, or other NLP techniques) toidentify “important” terms within style guides. By performing thissearch the method can extract one or more keywords that are “seasonally”important. That is, relevant at the date of the style guides. In someembodiments, the method may additionally adjust the lists based on astyle type.

In step 3206, the method queries an item collection using the seasonalkeywords. In one embodiment, querying an item collection may compriseselecting those items containing fields that include one or more of theseasonal keywords. In some embodiments, the method may additionallyidentify similar keywords to use based on the seasonal keywords. Forexample, the seasonal keywords may include the terms “winter,” “scarf,”and “gloves.” In response, the method may supplement these keywords withsimilar keywords such as “snow” and “cold.” In some embodiments, thissupplementing may be undertaken based on the accuracy of pastpredictions. That is, the method may monitor users' interactions withrecommendations and determine how accurate the supplemental keyword isas compared to the seasonal keyword. While described as natural seasons,seasonal keywords are not intended to be limited as such and generallyrefer to time-delimited keywords (e.g., a trending fashion style etc.)

In step 3208, the method selects an item returned from the query andperforms steps 3210 and 3212 for each item returned from the query.

In step 3210, the method determines if the item is already in the user'swardrobe. If so, the method skips the item in order to prevent therecommendation of items the user owns.

In step 3212, the method adds the item to a list of recommendations ifthe item is not in the user's wardrobe.

In step 3214, the method determines if any items return from the queryexist.

In step 3216, the method transmits the recommendations to a user. Insome embodiments, the items may be displayed on a virtual “model” or maybe presented as a list with images. In response, the user may select orreject items. If the user rejects all items the method may perform themethod to provide an updated list of recommendations.

FIG. 3C is a flow diagram illustrating a method of generating outfitsaccording to some embodiments of the disclosure.

In step 3302, the method receives an outfit request. In one embodiment,an outfit request may comprise an HTTP request indicating the userwishes to create a wardrobe. For example, the request may comprise arequest for a web application located at a particular URL.

In step 3304, the method receives a preference vector.

In some embodiments, the method may present the user with a list ofoptions wherein the user may select one or more multiple values for eachoption. In some embodiments, the options may relate to preferred colors,categories, usages, etc. The user may select values and these values maybe stored as an initial preference vector. For example, an initialpreference vector may indicate that a user is looking for the colorsblack or dark blue, under the category of business casual, and to beused for a work meeting.

In step 3306, the method generates an outfit matrix.

In one embodiment, the outfit matrix may comprise a grid or cube ofitems. In one embodiment, a grid may be used to display items forvarious categories. In alternative embodiments, a cube maybe used toshow single grids for each category and allowing the user to movebetween different grids. The actual display of items may always appeartwo-dimensional.

In one embodiment, the method identifies one or more categories of itemtypes for each grid. Next, the method uses the preference vector toidentify items in that type category. For example, the method may firstselect “Pants” and use the preference vector to narrow the options inthat category for the user. In some embodiments, the method mayextrapolate the preference vector to include similar items. For example,continuing the previous example, the method may include “dark gray” inthe list of colors.

In step 3308, the method displays the outfit matrix. In one embodiment,displaying the outfit matrix may comprise transmitting the matrix to auser device (e.g., computer or mobile device). In some embodiments,transmitting the matrix may comprise transmitting a structuredrepresentation of the matrix (e.g., a JSON or XML file) and updating thedisplay of a webpage or mobile application in response.

In step 3310, the method determines whether the user has updated thepreference vector. In some embodiments, the user may update thepreference vector after receiving an initial set of recommendations. Forexample, the user may update his or her color selections in response toviewing the recommendations.

In step 3312, the method may recalculate the outfit matrix upondetecting an update to the preference vector. In some embodiments,recalculating the outfit matrix may comprise transmitting the updatedpreference vector a server and generating a new outfit matrix asdescribed in connection with step 3306. In some embodiments, the methodmay continue the aforementioned process until the user indicatesotherwise. In some embodiments, the user may stop the process byselecting enough items to formulate an outfit. Alternatively, the usermay proactively stop the process at any time.

In step 3314, the method may receive a ranking of the outfit from theuser. In some embodiments, the method may update the method based on thereceived ranking. For example, the method may improve the searchcriteria generated from a preference vector based on whether the userprovides the outfit suggestions with a positive or negative review.

FIG. 3D is a flow diagram illustrating a method of completing an outfitaccording to some embodiments of the disclosure.

In step 3402, the method receives partial item outfits. In someembodiments, the method may allow a user to begin the process ofbuilding an outfit from items in the user's wardrobe and may allow theuser to initial the method after identifying a portion of the requiredoutfit items (e.g., selecting a pair of pants and hat but not selectinga shirt).

In step 3404, the method identifies the missing categories of itemsrequired for the outfit.

As illustrated, the method repeats steps 3408 and 3410 (discussedherein) for each of the remaining categories, steps 3406 and 3412.

As part of selecting items for an outfit, the method identifies a set ofcandidate items for a category based on a preference vector associatedwith the user and the categories, step 3408.

In some embodiments, the preference vector may be built based onanalyzing a user's preferences for brands, colors, and other itemattributes for a specific category. For example, if a user onlypurchases dark clothing, the preference vector may include only darkcolors for the category of “Shirts.” In some embodiments, the method mayidentify items from the user's wardrobe. Alternatively, or inconjunction with the foregoing, the method may identify items from acanonical, global item database or from third party merchants.

In step 3410, the method displays the items for a given category to auser. In some embodiments, the items may be displayed on a virtual“model” or may be presented as a list with images. In response, the usermay select or reject items. If the user rejects all items the method mayidentify another set of candidate items and re-display the items.

FIG. 3E is a flow diagram illustrating a method of generating an outfitaccording to some embodiments of the disclosure.

In step 3502, the method receives an initial item. In some embodiments,the initial item may comprise an item selected by a user from a userwardrobe.

In step 3504, the method determines if a known use exists for the item.In some embodiments, certain items or categories or items may beassociated with a known use or activity. For example, sunglasses may beassociated with the activity of “going to the beach.”

In step 3506, the method receives an intended use from the user if aknown use cannot be found. In some embodiments, a known use may not beapparent from the item or a known use may not be reliable. For example,a pair of jeans may not have an obvious intended use, but a user mayknow the actual use. Thus, in step 3506 the user may supply the knownuse based on his or her needs. In alternative embodiments, the methodmay allow the user to change the known use detected in step 3504.

In step 3508, the method identifies missing categories associated withthe use, if any.

In some embodiments, a known or intended use may be associated with anumber of categories. Continuing the previous example, the use of “goingto the beach” may associated with the categories of “Sunglasses” and“Bathing Suits.” Thus, the method may identify the category of “BathingSuits” as a missing category if the initial item was a pair ofsunglasses.

In step 3510, the method retrieves a plurality of item options for themissing categories.

In one embodiment, retrieving item options may comprise querying acanonical item database based on the missing categories. Alternatively,retrieving item options may comprise identifying options within a user'swardrobe. Alternatively, or in conjunction with the foregoing, themethod may filter the returned items based on user preferences.

In step 3512, the method displays the item options.

In one embodiment, the method may display the options on a virtual“model” to preview the combined items or outfit. In alternativeembodiments, the method may display the options in a grid or otherdisplay.

In step 3514, the method determines if an outfit has been made.

In some embodiments, the method may allow a user to accept or rejectitem options. If, after displaying a first set of options, the methoddetermines that a complete outfit has not been made, the method maycontinue to load options until a complete outfit has been completed andall identified categories have an associated item option. In thismanner, the method continues until the user receives a completedrecommended outfit or prematurely terminates the process.

FIG. 4 is a flow diagram illustrating a method of categorizing anextracted item of merchandise according to some embodiments of thedisclosure.

In step 402, the method receives a categorized item and, in step 404,extracts category numbers and category text from the item.

In the illustrated embodiment, the method may receive an item ofmerchandise after extracting the item of merchandise from a user emailaccount as discussed previously. In this embodiment, the item ofmerchandise may be categorized according to a first schema. In oneembodiment, the first schema may comprise a categorization according toa third-party categorization scheme. In the illustrated embodiment, anitem of merchandise may be categorized with a name (e.g., “Women'sBlouses”) and with one or more numerical codes organized as a list orarray of codes.

In step 406, the method determines whether the last extracted categorynumber matches a known category number.

In one embodiment, the category numbers may be ordered in a particularmanner. In one embodiment, the numbers may be organized according to alevel of granularity. For example, the numbers “100, 200, 300” maycorrespond to “Women's Clothing,” “Tops,” and “Blazers,” respectively.In this step, the method determines whether the wardrobe categorizationscheme includes a category corresponding to the last category (e.g.,“300” or “Blazers”). The method may perform this comparison to quicklycategorize an item when a specific category already exists. Scenarioswhere a last number is known may include those items that include asingle category (“Miscellaneous”) or include a commonly used category(e.g., “Women's Shoes” appearing after “Shoes”).

In step 408, if the last extracted category number matches a knowncategory number the method categorizes the items in a wardrobe.

In the illustrated embodiment, a wardrobe may include its owncategorization scheme. In one embodiment, the wardrobe's categorizationscheme may be provided by a system storing the wardrobe. In alternativeembodiments, the wardrobe categorization scheme may be configured by theuser and be unique for each user's wardrobe or within separate wardrobesof a single user. For example, a male user may be assigned a firstcategorization scheme whereas a female user may be assigned as secondcategorization scheme. Users may additionally be allowed to modifypre-defined categorization schemes as desired.

In step 410, the method determines if the first extracted categorynumber matches a known category number.

As illustrated, if the last number of the category numbers does notmatch a known category the method determines if the first categorynumber matches a known category. As discussed previously, an existingcategory system may utilize a generic category number (e.g., oneassociated with “Women's Clothing” as the first number). In this case,as in step 406, the method isolates this scenario to quickly categorizean item as there are, in theory, only a limited number of top levelcategory numbers.

In step 412, the method discards an item if the first extracted categorynumber is not known.

In some scenarios, the method may encounter a new category in the firstor last positions of the array of category numbers. In this scenario,the method may discard the item since the category is not supported bythe system. Additionally, the method may not add the item to a user'swardrobe. In some embodiments, during the processing of email messagesthe methods described previously may identify non-wardrobe items. Forexample, a user may purchase clothing as well as non-clothing items froma large online retailer which may place both the items in a singleemail. In this example, the method ignores items that do not fall into aknown highest level category. Alternatively, the method may store theitems and, instead, “hide” the items from the user.

In step 414, the method searches the category text for a knownexpression if the first category number matches a known category numberand, in step 417, determines if the category text matches theexpression.

As an example, the method may analyze the category name to determinewhether the category name matches a predefined expression such as“/women'?s?/i:” In this example, the method may be tuned to process,predominately, women's clothing and thus the detection of the categorynames including the term “women” or “women's.” In this manner, themethod may further refine the items into two sets: one meeting the setcriteria and a set not meeting the set criteria.

In alternative embodiments, the method may utilize a set of pre-definedkeywords mapped to one or more categories. In some embodiments, themapping may additionally include excluding non-clothing items (referredto as “exclusion keywords”). In some embodiments, the method may utilizetwo levels of exclusion keywords.

In a first level, keywords that sometimes appear in real clothing itemsbut also appear in non-clothing items (e.g., the term “bucket” which mayrefer to, for example, an “ice bucket” or a “leather bucket bag”). Forthis level, the method may determine if a category keyword (e.g., “bag”)comes after a first level exclusion keyword (e.g., “bucket”). If thereis a category keyword after the exclusion keyword, the method may placethe item in the category and, subsequently, into a user's closet. If theexclusion keyword is last (e.g., in the phrase “bag of ice bucket”) thenthe method may exclude the item.

At a second level, exclusions may include words like “Ziploc” or “icebucket” which the method may always exclude regardless of other terms inthe item description. As an example, the phrase “Ziploc bag” may beexcluded even though it includes the word “bag.”

In step 418, the method categorizes the item as “Other” if a match isnot found in step 416.

As discussed above, the method may place all items not matching theexpression in an “Other” category. For example, if the method (in steps414 and 416) was configured to detect the term “women” in the categoryname, the method would filter out, for example, men's clothing items(possibly purchased as gifts) into an “Other” category. In someembodiments, the method may utilize one or more computer visiontechniques to automatically categorize items into an “Other” categorybased on previous categorizations.

In step 420, the method prompts a user for a category if a match isfound in step 416.

After determining that the item corresponds to an identified category,the method prompts the user to categorize the element into asubcategory. For example, the method may allow a user to categorize“women's” items into subcategories corresponding to types of clothing(e.g., shirts, pants, etc.). In some embodiments, the method may allowthe user to create new categories and may save these new categorieseither for the wardrobe or globally.

In step 422, the method categorizes the item in a wardrobe based on theuser category.

Finally, after identifying the appropriate category, the methodcategorizes the item in the user's wardrobe. In one embodiment,categorizing an item may comprise increasing a count associated with thenumber of items previously assigned to the category. Alternatively, orin conjunction with the foregoing, categorizing may additionallycomprise updating a record associated with the item to indicate theappropriate categorization.

FIG. 5A is a flow diagram illustrating a method of converting an imageto a structured representation of an item of merchandise according tosome embodiments of the disclosure.

In step S102, the method receives an image upload. In some embodiments,the method receives images uploads from a user via a user interface suchas a website or mobile application. In alternative embodiments, themethod may receive an image from a website of a merchant. In someembodiments, the image upload may comprise a photograph of a product orof a label or tag present on a physical item of merchandise.

In step S104, the method processes the image to extract label data.

In some embodiments, processing an image may comprise pre-processing theimage (e.g., aligning the image, adjusting the contrast of an image,converting the image to grayscale, etc.) prior to processing the image.In one embodiment, processing the image may comprise performing opticalcharacter recognition on the image to obtain a text file correspondingto the received image.

In some embodiments, after processing the image the method may extractlabel data regarding the photograph. In some embodiments, label data maycomprise information regarding the purchase of an item including datapresent on a receipt such as the date purchased, a SKU of the item, anitem description, the price of the item, etc. Alternatively, or inconjunction with the foregoing, the label data may include additionalinformation such as the brand of the item, the materials of the item, anitem color etc. In some embodiments, label data may comprise a data in astructured format such as JSON or XML.

In step S106, the method filters the labels based on a certaintyassociated with each label.

In some embodiments, each piece of label data may be associated with acertainty level. In some embodiments, the certainty level represents theconfidence that the data extracted from the image is accurate and may berepresented as a percentage or interval. For example, the method maydetect an item brand with an assigned certainty level of 90% and an itemretailer with an assigned certainty level of 50%.

In step S108, the method compares the labels to category labels.

In one embodiment, a given category may be associated with one or morelabels. For example, a category of “Women's Shoes” may be assignedlabels corresponding to certain brand names associated with thecategory. As an example, the method may compare the identified labels todetermine if the extracted labels correspond to known category labels.For example, the method may determine that the extracted label “ManoloBlahnik” corresponds to the category “Women's Shoes.” In someembodiments, the method may only analyze extracted labels having acertainty above a predetermined threshold.

In step S110, the method identifies candidate labels and, in step S112,selects a specific label.

In some embodiments, the comparison of extracted labels to categorylabels may result in numerous categories of varying granularity. Forexample, the label “Manolo Blahnik” may match the category labels“Shoes,” “Women's Shoes,” “Designer Shoes” and “Women's Designer Shoes.”Such labels may be organized in a hierarchy. In the illustratedembodiment, the method selects the category having the finestgranularity (E.g., “Women's Designer Shoes”) as the appropriate categoryfor the extracted label data. In this manner, the method is capable ofconverting a specific extracted label (e.g., a brand name) to a wardrobecategory label (e.g., “Women's Designer Shoes”) without requiringadditional input from the user.

In some embodiments, prior to processing the image the method maydetermine if processing of an image is needed. For example, in someembodiments, the method may receive an image uploaded by a user that isassociated with a product webpage. For example, the method may receive,via a browser extension, a URL of a product webpage that includes aphoto. In this embodiment, the method may detect that the photo is not aphoto taken a by a user and may already be associated with a category.If so, the method may bypass image processing and categorize the itemusing, for example, the techniques described in connection with FIG. 4.

FIG. 5B is a flow diagram illustrating a method of processing an imageof an item receipt according to some embodiments of the disclosure.

In step S202, the method receives an image of a receipt. In someembodiments, an image of a receipt may be uploaded by a user to aspecific e-mail address. In some embodiments, an e-mail account may beconfigured to transfer the image of the receipt for further processing.

In step S204, the method processes the receipt image. In someembodiments, the method may first perform OCR operations on the image toextract textual content. In some embodiments, the method may utilize amachine learning algorithm to verify the accuracy of the OCR operations.In some embodiments, the method may utilize additional machine learningalgorithms to assign item details to the image. In alternativeembodiments, the method may utilize a crowdsourcing platform (e.g.,Amazon Mechanical Turk) to perform the aforementioned operations.

In step S206, the method retrieves supplemental data for the receiptimage. As discussed previously, the method may query a third partydatabase using an identifier of the item(s) extracted from the receiptimage to retrieve supplemental data such as categories, brand names,colors, sizes, etc.

In step S208, the method determines if any errors occurred whileretrieving supplemental data in step S206. In some embodiments, thedetails extracted from the receipt may be incorrect and thus retrievalof supplemental data may fail. Alternatively, if the method accuratelyretrieves supplemental data (and, by implication, accurately extractsitem details), the method may proceed to save the item. Methods ofsaving an item are discussed more fully previously and are not repeatedherein for the sake of clarity.

In step S210, the method re-processes the receipt image. In someembodiments, the method may reprocess the image upon detecting that theretrieval of supplemental data has failed (and, by implication, theextracted item details are incorrect). In some embodiments,re-processing the receipt image may be performed a manner similar tothat described with respect to step S204.

In step S212, the method may determine whether the re-processed itemdetails are the same as the processed item details from step S204.

In step S214, the method retrieves supplemental data upon determiningthat the pre-processed item details are different from those received instep S204. Retrieving supplemental details may be performed in wayssimilar to step S206.

In step S216, the method determines if errors arose during step S216. Insome embodiments, the details extracted from the re-processed receiptmay be incorrect and thus retrieval of supplemental data may fail.Alternatively, if the method accurately retrieves supplemental data(and, by implication, accurately extracts item details), the method mayproceed to save the item in step S218. Methods of saving an item arediscussed more fully previously and are not repeated herein for the sakeof clarity.

In step S220, the method marks the item as unsorted if the methoddetects errors during a second supplemental data retrieval. The methodmay mark an item as unsorted to indicate that further processing may beneeded due to repeated failures to accurately identify the item in thereceipt image.

In step S222, the method processes the unsorted item. In someembodiments, the method may transmit the receipt image (and optionally,processing results) to a human reviewer for manual review. In someembodiments, the method may utilize a crowdsourcing platform (e.g.,Amazon Mechanical Turk) to perform a manual review. In some embodiments,the method may utilize third party databases to review the item receipt.

FIG. 6 is a flow diagram illustrating a method of extracting purchasesof users from third-party merchants according to some embodiments of thedisclosure.

In step 602, the method scans an email. In some embodiments, scanning anemail may be performed using the techniques discussed previously.

In step 604, the method detects a frequent merchant.

In some embodiments, the method may keep a running tally of the numberof emails from merchants. Thus, the method may initialize a counter upondetecting a new merchant and may increment the counter each time anemail from the merchant is identified. The method may then continuallysort the merchants to identify merchants with whom the user frequentlyconducts commerce. In some embodiments, the method may use a predefinedcount (e.g., 50 emails) to classify a merchant as a frequent merchant.In some embodiments, this count may be dependent on a predefined timeperiod (e.g., 50 emails during the last six months). In someembodiments, the method may additionally utilize a “whitelist” ofmerchants to limit the further processing steps to merchants appearingwithin the whitelist.

In step 606, the method receives user-merchant credentials.

In one embodiment, the method prompts the user for their credentials forthe frequent merchant's website. In some embodiments, the credentialsmay comprise a username/email address and password the user utilizes topurchase items from the frequent merchant. In some embodiments, themethod may additionally perform validations of the credentials (e.g.,verifying the format of an email address, verifying the presence of ausername/email address and/or password).

Alternatively, or in conjunction with the foregoing, the method maydetermine if the user does not enter credentials for the frequentmerchant's website. If the user does not supply credentials, the methodmay continue processing items as described previously.

In some embodiments, the method may receive user credentials during theinitial processing of emails. In alternative embodiments, the method mayreceive user credentials via a settings webpage or similar webpage. Inthis embodiment, the method may identify a frequent merchant and maystore the identity of the frequent merchant in a user account for laterretrieval. In this embodiment, the method allows the user to “restart”the method at step 606 at a later date.

In step 608, the method hides merchant items.

After receiving the user's credentials, the method may temporarily hidethe items of the frequent merchant from the user wardrobe. In thisembodiment, the method may be run in conjunction with the previousmethods describing parsing and storing items in a user wardrobediscussed previously. By hiding the frequent merchant items, the methodprevents the user from manipulating the items while the method continuesprocessing the frequent merchant items. In the embodiment where a userenters credentials via a settings webpage, the method may hide the itemsalready added to the user's wardrobe.

In step 610, the method crawls a website of the merchant.

In some embodiments, the method may utilize the user credentials andlogin to the frequent merchant's website. The method may then identify asection of the website that lists a user's purchases. In someembodiments, the method may utilize a predefine “script” for accessing afrequent merchant website. Specifically, a script may define a set ofactions needed to simulate user activity on the website. For example, ascript may include an identification of hyperlinks to “click” orotherwise follow to simulate a user accessing a list of purchases. Eachmerchant within the whitelist may be associated with a script to accessa listing of purchases.

In step 612, the method extracts items from the crawl.

As discussed above, the method may access a script associated with thefrequent merchant and execute the script using the user credentials. Forexample, the script may fill in the user credentials for a merchantssite via a login URL, may “click” a hyperlink including the text “MyAccount,” may then click a link including the text “Past Purchases,” andmay then select each hyperlink including a “href” attribute matching apredefined pattern such as/̂(http)?s?(:\/\/)?(www\.)?example.com\/orders\/\d*/. As discussed above,the specific “steps” in the script will vary depending on the identityof the frequent merchant.

As part of the crawl, the method may identify a plurality of pagesincluding details regarding a user's orders. In some embodiments, thepages may include product pages or invoice pages. For each of thesepages the method may extract details from the product page using XPath,XSLT, JavaScript, or other techniques for extracting data from HTML orXML documents.

In step 614, the method updates items with crawl data.

In the illustrated embodiment, after the method extracts item detailsfrom pages of a frequent merchant the method may cross reference thecrawled items with the items extracted from corresponding user emails.In one embodiment, a user email may include an order identifier whichmay be used to identify the corresponding webpage provided by thecorresponding merchant. In this manner, the method may supplement thedetails extracted from the user emails with additional data appearing onthe frequent merchant webpages. For example, the method may extractadditional images from the frequent merchant website associated with anitem identified

FIGS. 7A and 7B are flow diagrams illustrating methods of automaticallydetecting returned merchandise by parsing a user email account accordingto some embodiments of the disclosure.

In step 7102, the method detects a return email.

As discussed previously, the method may parse emails associated with auser account. In the illustrated embodiment, the method may operate aspart of the initial processing of a user inbox to separately handlereturn item emails (as compared to receipt or purchase emails).

In one embodiment, the method may utilize a set of filters to detectthat an email is not only from a merchant but also relates to a returneditem. For example, the method may identify emails having a subject thatincludes the regular expression /return/i and, optionally, is associatedwith a known merchant return email.

In step 7104, the method extracts and queues items identified in thereturn email.

In one embodiment, the method may extract items from the return emailusing the methods discussed previously. Additionally, as illustrated,the method may place the detected item into a returned item queue forsubsequent processing. In some embodiments, the returned item queue maybe designed similar to the inbox queues discussed previously.

In step 7106, the method compares all of the user's items to items inthe queue and, in step 7108, determines if the item is in the returnqueue.

In this step, the method may execute a job previously queued in step7104. In one embodiment, the method only selects the user's items thatwere not previously marked as returned. In one embodiment, the methodmay extract all of the identifiers of the user's non-returned items andcompare the list of identifiers to the identifiers of the queued returnitems.

In step 7110, the method continues to processes the return item normallyif the item is not in the return queue. The normal processing of emailsis discussed more fully previously. In step 7112, the method adds theidentified return item to the user's items and, in step 7114, marks theitem as returned.

In the illustrated embodiment, adding an item to the user items maycomprise adding the item to a user wardrobe. In some embodiments, themethod may bypass the supplementing of the item with data from thirdparties as discussed previously. Additionally, the method marks the itemas returned by setting a flag on the item stored in the user's wardrobe.Alternatively, or in conjunction with the foregoing, the method mayadditionally add the date of the return email as a returned date for theitem.

While the method illustrated in FIG. 7A may be run upon a user accountregistration, the method illustrated in FIG. 7B may be run periodicallyafter a user has registered an account.

In step 7202, the method detects an item in a return email. As discussedpreviously, the method may be run continuously after a user registeredan account. Thus, the method may continuously parse incoming user emailsto detect return emails.

In one embodiment, the method may utilize a set of filters to detectthat an email is not only from a merchant but also relates to a returneditem. For example, the method may identify emails having a subject thatincludes the regular expression /return/i and, optionally, is associatedwith a known merchant sender as a return email.

In step 7204, the method identifies the returned item(s) in the useritems.

As discussed, a user may be associated with one or more items inwardrobe. In step 7204 the method cross references the extracted returnitem with the one or more saved items. In this manner, the methodconfirms that the return item corresponds to an existing item in theuser wardrobe. In some embodiments, the method may utilize an identifierof the item to perform this check.

In step 7206, the method confirms whether the returned item exists inthe user collection.

If the method determines that the returned item has not been added tothe user collection, the method adds the returned item to the user'swardrobe collection in step 7208. Alternatively, if the methoddetermines that the returned item is already in the user's wardrobe themethod continues to step 7210.

In step 7210, the method marks the returned item as returned.

In one embodiment, marking an item as returned may comprise setting aflag on the item stored in the user's wardrobe. Alternatively, or inconjunction with the foregoing, the method may additionally add the dateof the return email as a returned date for the item. Alternatively, orin conjunction with the foregoing, the method may additionally notifythe user that an item was flagged as returned so as to notify the userand allow the user to override the method.

FIG. 8 is a flow diagram illustrating a method of recommending on-saleitems to users by parsing user wardrobes according to some embodimentsof the disclosure.

In step 802, the method selects a wishlist.

In the illustrated embodiment, a system may allow a user to create awishlist of items that the user may desire to purchase in the future. Insome embodiments, items may be added via a website or mobileapplication. Alternatively, or in conjunction with the foregoing, themethod may allow for the addition of items using a browser extension orother mechanism. In some embodiments, items in a wishlist may beprocessed similar to items extracted from emails as discussedpreviously.

In step 804, the method selects an item in the wishlist and performs aseries of checks to determine if an item in the wishlist is currently onsale.

In step 806, the method determines if the item has a sale price.

In some embodiments, the method may extract an identifier associatedwith a wishlist item and may query a database that includes pricinginformation associated with the product. In one embodiment, the databasemay include an original price and a sale price updated periodically by amerchant. In step 806, if the method determines that a sale price doesnot exist the method may continue to analyze the remaining items in thelist, step 816.

In step 808, the method determines if the sale price exceeds a pricethreshold.

As discussed, at step 808, the method obtains an original price and atleast one sale price associated with a wishlist item. In the illustratedembodiment, the method may calculate a price difference between the saleprice and original price to determine whether further processing isneeded. In one embodiment, the method may determine if the sale price isgreater than 5% cheaper than the original price or less than 80%cheaper.

In step 810, the method adds the item to a list of sale items.

In one embodiment, adding an item to a list of sale items may comprisemarking a record associated with the sale item as on sale by setting a“sale” field of the item. Additionally, the method may store the saleprice and a URL of the sale item with the item.

In step 812, the method determines if the store associated with the saleis on a whitelist. In some embodiments, a whitelist of merchants may bemaintained to only allow sale prices to be accepted for a known set ofmerchants.

If the method determines that the merchant is not on the whitelist, themethod may continue to parse the remaining wishlist items, step 816.Alternatively, if the merchant is on the whitelist, the method may flagthe item as on the merchant whitelist. In some embodiments, a whitelistmay be used to prevent alerting users to fraudulent or disreputablestores or retailers.

In step 818, after reviewing each item on the wishlist the method alertsthe user of sale items. In one embodiment, the method may only alertthose items flagged in step 814. That is, only items on sale atwhitelisted merchants. In some embodiments, alerting a user may comprisegenerating an email listing the on sale items and transmitting the emailto a user a predetermined time. In some embodiments, the time may beselected based on the timing of a sale associated with an item.

FIG. 9 is a flow diagram illustrating a method of automaticallyinitiating the return of merchandise according to some embodiments ofthe disclosure.

In step 902, the method parses an email. In the illustrated embodiment,parsing an email may be performed in a manner similar to methodsdescribed previously with respect to parsing a user's email messages.

In step 904, the method determines if return information is presentwithin the email. In some embodiments, merchants may transmit emailmessages to users upon purchases that include information regarding howto return an item (e.g., a hyperlink, form or other mechanism) andimportant dates for returning items. If the email includes thisinformation, the method may continue to step 908.

Alternatively, in step 906, the method determines return info if theemail message does not include return information.

Notably, some merchants may transmit emails indicating a purchase butfail to include additional return information (e.g., links to generatereturn packaging). In this scenario, the method may calculate the returninformation using an identifier of the product. For example, the methodmay crawl a merchant website (as discussed previously) to retrieveinformation regarding the return process (e.g., a return hyperlink on aninvoice page or a form or a return date).

In step 908, the method stores return information. In one embodiment,storing return information may comprise storing a return date, hyperlinkto a return page, or other information the user requires to facilitatethe return.

In step 910, the method inspects items. As illustrated, the method mayperiodically inspect items that have included return information.Specifically, the method may filter a user wardrobe to retrieve onlythose items that were associated with return info in step 908.

In step 912, the method next identifies whether a return date isupcoming.

In one embodiment, the method determines if a return is upcoming byidentifying the latest date the user may return the item. As discussedabove, the method may extract the last day the user may return from anemail for from a merchant site. Thus, the method may compare the currentdate to the return date and determine whether the current date is withina predefined range (e.g., 1 week) of the last possible return date.

In step 914, the method alerts the user of the upcoming return orautomatically initiates the return.

In a first embodiment, the method may email the user to alert them thatan upcoming return deadline is approaching. Alternatively, or inconjunction with the foregoing, the method may additionally providehelpful information regarding the return (e.g., a hyperlink to returnthe item, return processing information, etc.).

Alternatively, or in conjunction with the foregoing, the method mayautomatically initiate the return. As described above, the method maystore information necessary to complete a return (e.g., a hyperlink torequest a return). In one embodiment, the method may automaticallyselect, for example, the hyperlink to initiate the return. In someembodiments, the method may simulate a user login (discussed previously)to initiate a return. In these embodiments, the method may alert theuser that a return was initiated after automatically initiating thereturn.

FIG. 10 is a flow diagram illustrating a method of automaticallydetecting price adjustments of merchandise according to some embodimentsof the disclosure.

In step 1002, the method inspects items. In one embodiment, inspectingitems may comprise periodically inspecting items saved to a userwardrobe.

In step 1004, the method determines whether a price associated with anitem has changed. In some embodiments, the method may query a thirdparty database or merchant website to retrieve a current price for anitem. In some embodiments, the method may crawl a merchant website usingthe credentials of a user to identify a current price as discussedpreviously. If the price has not changed, the method continues toprocess the remaining items.

In step 1006, the method determines if the change in price shouldtrigger a price adjustment.

In some embodiments, the method may determine if the change in price isbetween 2.5% or 90% of the original price, while other limits may beutilized depending on the needs of the application. In this manner, themethod filters minor or extreme price fluctuations since minorfluctuations may be available for a price adjustment and major pricechanges may indicate errors in the underlying data.

In step 1012, the method generates an exception if the price change isnot within the defined limits. In some embodiments, the generation of anexception may only be raised if the price change is excessive (e.g., 90%of the original price). Alternatively, or in conjunction with theforegoing, an exception may be raised in all cases to allow forinspection of the price change.

In step 1008, the method emails a merchant.

In some embodiments, the method may automatically email a merchant torequest a price adjustment. In some embodiments, the method may onlyemail a merchant if a setting is set by the user allowing the automaticemail. In some embodiments, the email may be sent by a third party whilein other embodiments, the email may be sent from the user's emailaccount. In some embodiments, the method may email an email addressassociated with the merchant which may be associated with the item ormay be extracted from the merchant website.

In step 1010, the method alerts the user.

In some embodiments, the method may bypass emailing a merchant and mayonly alert a user depending on the user's preferences. In someembodiments, alerting a user may comprise emailing a user.

FIG. 11 is a flow diagram illustrating a method of facilitating savingof merchandise from third party webpages according to some embodimentsof the disclosure.

In step 1102, the method loads a webpage.

In some embodiments, a webpage may correspond to a webpage provided by amerchant. In some embodiments, the webpage may be a product page.

In step 1104, the method receives a user interaction.

In some embodiments, the user interaction may be an interaction with abrowser extension or helper object. In some embodiments, the userinteraction may be a user interaction with a browser toolbar item.Alternatively, or in conjunction with the foregoing, the userinteraction may be a user interaction with a bookmarklet or context menuitem. Alternatively, or in conjunction with the foregoing, the userinteraction may be a user interaction with a feature of the webpageitself.

In step 1106, the method extracts item details from the webpage.

As discussed previously, the webpage may include details regarding anitem. As such, the webpage may include information relating to theproduct such as a product name, brand name, SKU number, price, images,and other details. In some embodiments, the method may utilize atemplate for a given webpage in order to identify the item details fromthe webpage. For example, the method may utilize XPath expressionsassociated with a given website to extract item details.

In step 1108, the method transmits the item details to a server.

In some embodiments, the method packages the item details into a payloadfor transmission to a server hosting a user item collection. In someembodiments, transmitting item details may comprise transmitting theitems to an API endpoint. In some embodiments, the method mayadditionally authenticate a user prior to transmitting the itemsdetails.

In step 1110, the method updates a user item collection in response tothe item details.

As discussed previously, a user may be associated with one or more itemsextracted from the user's email. In the illustrated embodiment, themethod receives the item payload and may add the item associated withthe webpage to the user collection, thus supplementing the itemsidentified in the user email. In some embodiments, the method may addthe items directly to a user wardrobe. In alternative embodiments, themethod may add the items to a wishlist or other collection of items. Insome embodiments, the item details stored in the user collection mayadditionally include the URL of the webpage where the user interactionwas detected.

FIG. 12 is a flow diagram illustrating a method of recommending productsbased on weather forecasts according to some embodiments of thedisclosure.

In step 1202, the method retrieves a forecast.

In some embodiments, the method may retrieve a forecast from a thirdparty weather provider via an API. In some embodiments, the method mayretrieve the forecast in response to a user request for a wardroberecommendation. In some embodiments, the user's location may beidentified via a user profile associated with the user. In alternativeembodiments, the user's location may be identified via the user's actuallocation (e.g., via a geolocation API of a mobile device). Inalternative embodiments, the method may utilize trip details of a userin determining the appropriate forecast. For example, the user mayindicate an upcoming vacation, the location of which may be utilized toretrieve the appropriate forecast.

In step 1204, the method searches for items in the user's wardrobe foritems.

In the illustrated embodiment, the method may search for wardrobe itemsmatching the received weather forecast. In some embodiments, each itemin the wardrobe may be associated with a weather “type” (e.g., coldweather, rainy weather, etc.). In this embodiment, the method may filterthe user items based on the type associated weather. Alternatively, orin conjunction with the foregoing, each item may be associated with acategory which implicitly is associated with a forecast type. Forexample, a category “Raincoats” may be associated with rainy and/orsnowy weather. In this embodiment, the method may filter those itemshaving a category matching the forecast.

In step 1206, the method determines if matching items exist in theuser's wardrobe.

If so, the method selects the matching items in step 1210.

If not, the method searches a user's wishlist for matching items in step1208. The steps of matching a wishlist item to a forecast may be similarto those discussed in connection with step 1204.

In step 1212, the method displays the matching items.

In some embodiments, the method may display a listing of potential itemsto a user based on the forecast, thus allowing the user to select itemsappropriate for the retrieved forecast. In some embodiments, the methodmay additionally allow users to create outfits, thus allowing users toplan for trips or future weather.

FIG. 13A is a flow diagram illustrating a method of facilitating thepurchase of merchandise by re-commerce entities according to someembodiments of the disclosure.

In step 1310, the method receives an inventory search. In someembodiments, a system may allow re-commerce sites to search users'wardrobes to identify items the re-commerce may be interested inpurchasing for resale. In some embodiments, the system may allow are-commerce site to search for items by brand name, item name, SKUnumber, price, etc.

In step 1312, the method identifies a set of candidate users that meetthe search parameters. In some embodiments, the method uses the inventorsearch to identify those users that match the re-commerce entitiesinventory search. In some embodiments, the users may comprise usersmatching the parameters of the search. Alternatively, or in conjunctionwith the foregoing, the method may identify users similar to users whomatch the search parameters.

In some embodiments, the method may additionally transmit detailsregarding the users and or the items to the re-commerce entity. Forexample, the method may verify a user actually owns the item and mayprovide the amount of time the user has owned (and/or worn) the item.

In step 1314, the method enables the re-commerce entity to make apurchase request. In some embodiments, a purchase request may comprisetransmitting an email to a user indicating that an entity would like topurchase a user's item or items. In some embodiments, the request mayadditionally include a price. In some embodiments, the price may includea starting “bid” and may allow the user to present a counter offer. Insome embodiments, this bidding process may continue until an agreedprice is or is not reached.

In step 1316, the method coordinates the transaction between the userand re-commerce provider. In some embodiments, coordinating atransaction may comprise facilitating payment and shipping of the itembetween the parties.

FIG. 13B is a flow diagram illustrating a method for providing apeer-to-peer marketplace according to some embodiments of thedisclosure.

In step 1320, the method receives a sell request for an item in a user'swardrobe from the user. In some embodiments, the method may enable auser to select an item and indicate that the user would like to sell theitem in the user's wardrobe. In some embodiments, a user may utilize awebsite or mobile application to initiate the selling process.

In step 1322, the method authenticates the item. In some embodiments,the method may ensure that the item the user wishes to sell correspondsto a purchase receipt received via email. Additionally, the method mayconfirm that the user has not returned the item. Additionally, themethod may confirm that the item was actually delivered to the user.Additionally, the method may measure the user's purchase velocity oranalyze the user's purchase history to determine whether the user is alegitimate seller. Additionally, the method may utilize the user'slocation to determine if the user is legitimate or illegitimate.

In step 1324, the method places the item for sale. In some embodiments,placing the item for sale may comprise listing the item on a web-basedor mobile-based marketplace. In some embodiments, the market place maylist details regarding the item and seller including the amount of timeowned, the number of times worn, the price paid, etc.

In step 1326, the method optionally identifies potential customers.Since the method has access to user wardrobes, the method may comparethe item to wardrobes of other users in order to facilitatetransactions. For example, the method may first exclude users whoalready own the item. The method may also identify users who have theitem in their wishlist. The method may also segment users based onwardrobe preferences or cluster users based on purchase histories.

FIG. 14 is a flow diagram illustrating a method of tracking packagesaccording to some embodiments of the disclosure.

In step 1402, the method retrieves shipping emails received at a useraccount.

In step 1404, the method retrieves shipping details associated with theemail.

In some embodiments, retrieving shipping details may comprise extractingshipping parameters (e.g., carrier, tracking number, etc.) from theemail itself. Alternatively, or in conjunction with the foregoing, themethod may query a shipping company database to retrieve data relatingto the shipping email. Alternatively, or in conjunction with theforegoing, the method may retrieve shipping details from a merchant'swebsite.

In step 1406, the method determines if the order was delivered orcancelled. In some embodiments, the shipping information retrieved instep 1404 includes an indication of the status of the shipment.

In step 1408, the method marks the item as delivered.

As discussed previously, a user may be associated with a wardrobe ofpurchased items. Thus, the method may update a record associated withthe item if the item was determined to be delivered. Alternatively, orin conjunction with the foregoing, the method may mark the item as“cancelled” if the order was cancelled or may remove the item from theuser's wardrobe if detecting the order was cancelled.

In step 1410, the method monitors the delivery status of an order if itis determined that the delivery is pending.

In some embodiments, the method may access a shipping API or database toperiodically determine the status of orders. In alternative embodiments,the method may crawl one or more webpages to retrieve shipping details.

In step 1412, the method receives a change in status of delivery.Examples of changes include the marking of a shipment as “out fordelivery” or “in transit.” In some embodiments, the status may be“pushed” to the method. In alternative embodiments, the method mayactively retrieve shipment statuses.

In step 1414, the method determines if the shipments status was changedto “out for delivery” and if so, the method may alert the user of thechange in status, step 1420. In some embodiments, alerting a user maycomprise sending an email, SMS, or other message to the user alertingthem that the shipment is out for delivery.

In step 1416, the method determines if the order was delivered orcancelled. In this step, the method ensures that packages out fordelivery have been delivered. If the package changes from “out fordelivery” to delivered or cancelled, the method marks the item asdelivered or canceled in step 1408. In some embodiments, the method mayadditionally alert the user when the shipment was delivered and/orcancelled.

In step 1418, the method updates the status of the shipment if theprevious conditions are not met. That is, the method may continuallyupdate the status of the shipment to allow a user to view the status ofshipments while reserving notifications for certain events.

FIG. 15 is a flow diagram illustrating a method for providing auniversal shopping cart according to some embodiments of the disclosure.

In step 1502, the method displays products. In some embodiments, themethod may display products from a variety of different merchants and/orfrom a variety of different brands. In some embodiments, each of theproducts may be stored in a products database or may be retrieved from athird party service.

In step 1504, the method selects products and attributes for theproducts. In one embodiment, the method enables a user to select aproduct and configure the product according to predefined options. Forexample, the method may allow the user to select the color or size of aproduct.

In step 1506, the method adds the product to a cart (e.g., asession-based storage area) and may initiate a checkout procedure inresponse to user input, step 1508.

Upon checkout, the method may select an item in the user's cart andidentify a merchant associated with the item, step 1510. In someembodiments, selecting a merchant may comprise identifying a merchantwebsite and a “script” that allows the method to perform furtherinteractions with the webpage.

In step 1512, the method simulates a purchase of the item at themerchant website. In one embodiment, simulating a purchase may compriseloading the “script” associated with merchant and executing the script.In one embodiment, a script corresponds to a set of steps that simulatea user browsing session. For example, the script may include the actionsof visiting a product page, configuring options (e.g., color, size,etc.), clicking a checkout button, filling in credit card and/orshipping details, and clicking an “order” button. In some embodiments,the method may additionally allow for the entering of “promotionalcodes” for merchants. In some embodiments, these codes may be suppliedby the user or, alternatively, may be determined by the server executingthe method (e.g., via crawling social media). Alternatively, or inconjunction with the foregoing, the method may be configured todifferentiate between shipping methods (e.g., based on user preferencesfor slower or faster shipping). Alternatively, or in conjunction withthe foregoing, the method may be configured to detect that an item is nolonger available on a merchant site. In this embodiment, the method maynotify the user of the missing item or may, alternatively, or inconjunction with the foregoing, provide a list of suggestions on whereto purchase the item based on a database of products.

In step 1514 the method may add the purchased item to the user'swardrobe as discussed previously and may continue to purchase items,step 1516.

The subject matter described above may be embodied in a variety ofdifferent forms and, therefore, covered or claimed subject matter isintended to be construed as not being limited to any example embodimentsset forth herein; example embodiments are provided merely to beillustrative. Likewise, a reasonably broad scope for claimed or coveredsubject matter is intended. Among other things, for example, subjectmatter may be embodied as methods, devices, components, or systems.Accordingly, embodiments may, for example, take the form of hardware,software, firmware or any combination thereof (other than software perse). The description presented above is, therefore, not intended to betaken in a limiting sense.

Throughout the specification and claims, terms may have nuanced meaningssuggested or implied in context beyond an explicitly stated meaning.Likewise, the phrase “in one embodiment” as used herein does notnecessarily refer to the same embodiment and the phrase “in anotherembodiment” as used herein does not necessarily refer to a differentembodiment. It is intended, for example, that claimed subject matterinclude combinations of example embodiments in whole or in part.

In general, terminology may be understood at least in part from usage incontext. For example, terms, such as “and”, “or”, or “and/or,” as usedherein may include a variety of meanings that may depend at least inpart upon the context in which such terms are used. Typically, “or” ifused to associate a list, such as A, B or C, is intended to mean A, B,and C, here used in the inclusive sense, as well as A, B or C, here usedin the exclusive sense. In addition, the term “one or more” as usedherein, depending at least in part upon context, may be used to describeany feature, structure, or characteristic in a singular sense or may beused to describe combinations of features, structures or characteristicsin a plural sense. Similarly, terms, such as “a,” “an,” or “the,” again,may be understood to convey a singular usage or to convey a pluralusage, depending at least in part upon context. In addition, the term“based on” may be understood as not necessarily intended to convey anexclusive set of factors and may, instead, allow for existence ofadditional factors not necessarily expressly described, again, dependingat least in part on context.

The present disclosure is described below with reference to blockdiagrams and operational illustrations of methods and devices. It isunderstood that each block of the block diagrams or operationalillustrations, and combinations of blocks in the block diagrams oroperational illustrations, can be implemented by means of analog ordigital hardware and computer program instructions. These computerprogram instructions can be provided to a processor of a general purposecomputer to alter its function as detailed herein, a special purposecomputer, ASIC, or other programmable data processing apparatus, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, implement thefunctions/acts specified in the block diagrams or operational block orblocks. In some alternate implementations, the functions/acts noted inthe blocks can occur out of the order noted in the operationalillustrations. For example, two blocks shown in succession can in factbe executed substantially concurrently or the blocks can sometimes beexecuted in the reverse order, depending upon the functionality/actsinvolved.

These computer program instructions can be provided to a processor of: ageneral purpose computer to alter its function to a special purpose; aspecial purpose computer; ASIC; or other programmable digital dataprocessing apparatus, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, implement the functions/acts specified in the block diagramsor operational block or blocks, thereby transforming their functionalityin accordance with embodiments herein.

For the purposes of this disclosure a computer readable medium (orcomputer-readable storage medium/media) stores computer data, which datacan include computer program code (or computer-executable instructions)that is executable by a computer, in machine readable form. By way ofexample, and not limitation, a computer readable medium may comprisecomputer readable storage media, for tangible or fixed storage of data,or communication media for transient interpretation of code-containingsignals. Computer readable storage media, as used herein, refers tophysical or tangible storage (as opposed to signals) and includeswithout limitation volatile and non-volatile, removable andnon-removable media implemented in any method or technology for thetangible storage of information such as computer-readable instructions,data structures, program modules or other data. Computer readablestorage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM,flash memory or other solid state memory technology, CD-ROM, DVD, orother optical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other physical ormaterial medium which can be used to tangibly store the desiredinformation or data or instructions and which can be accessed by acomputer or processor.

For the purposes of this disclosure the term “server” should beunderstood to refer to a service point which provides processing,database, and communication facilities. By way of example, and notlimitation, the term “server” can refer to a single, physical processorwith associated communications and data storage and database facilities,or it can refer to a networked or clustered complex of processors andassociated network and storage devices, as well as operating softwareand one or more database systems and application software that supportthe services provided by the server. Servers may vary widely inconfiguration or capabilities, but generally a server may include one ormore central processing units and memory. A server may also include oneor more mass storage devices, one or more power supplies, one or morewired or wireless network interfaces, one or more input/outputinterfaces, or one or more operating systems, such as Windows Server,Mac OS X, Unix, Linux, FreeBSD, or the like.

For the purposes of this disclosure a “network” should be understood torefer to a network that may couple devices so that communications may beexchanged, such as between a server and a client device or other typesof devices, including between wireless devices coupled via a wirelessnetwork, for example. A network may also include mass storage, such asnetwork attached storage (NAS), a storage area network (SAN), or otherforms of computer or machine readable media, for example. A network mayinclude the Internet, one or more local area networks (LANs), one ormore wide area networks (WANs), wire-line type connections, wirelesstype connections, cellular or any combination thereof. Likewise,sub-networks, which may employ differing architectures or may becompliant or compatible with differing protocols, may interoperatewithin a larger network. Various types of devices may, for example, bemade available to provide an interoperable capability for differingarchitectures or protocols. As one illustrative example, a router mayprovide a link between otherwise separate and independent LANs.

A communication link or channel may include, for example, analogtelephone lines, such as a twisted wire pair, a coaxial cable, full orfractional digital lines including T1, T2, T3, or T4 type lines,Integrated Services Digital Networks (ISDNs), Digital Subscriber Lines(DSLs), wireless links including satellite links, or other communicationlinks or channels, such as may be known to those skilled in the art.Furthermore, a computing device or other related electronic devices maybe remotely coupled to a network, such as via a wired or wireless lineor link, for example.

For purposes of this disclosure, a “wireless network” should beunderstood to couple client devices with a network. A wireless networkmay employ stand-alone ad-hoc networks, mesh networks, Wireless LAN(WLAN) networks, cellular networks, or the like. A wireless network mayfurther include a system of terminals, gateways, routers, or the likecoupled by wireless radio links, or the like, which may move freely,randomly or organize themselves arbitrarily, such that network topologymay change, at times even rapidly.

A wireless network may further employ a plurality of network accesstechnologies, including Wi-Fi, Long Term Evolution (LTE), WLAN, WirelessRouter (WR) mesh, or 2nd, 3rd, or 4th generation (2G, 3G, or 4G)cellular technology, or the like. Network access technologies may enablewide area coverage for devices, such as client devices with varyingdegrees of mobility, for example.

For example, a network may enable RF or wireless type communication viaone or more network access technologies, such as Global System forMobile communication (GSM), Universal Mobile Telecommunications System(UMTS), General Packet Radio Services (GPRS), Enhanced Data GSMEnvironment (EDGE), 3GPP Long Term Evolution (LTE), LTE Advanced,Wideband Code Division Multiple Access (WCDMA), Bluetooth, 802.11b/g/n,or the like. A wireless network may include virtually any type ofwireless communication mechanism by which signals may be communicatedbetween devices, such as a client device or a computing device, betweenor within a network, or the like.

For the purposes of this disclosure a module is a software, hardware, orfirmware (or combinations thereof) system, process or functionality, orcomponent thereof, that performs or facilitates the processes, features,and/or functions described herein (with or without human interaction oraugmentation). A module can include sub-modules. Software components ofa module may be stored on a computer readable medium for execution by aprocessor. Modules may be integral to one or more servers, or be loadedand executed by one or more servers. One or more modules may be groupedinto an engine or an application.

For the purposes of this disclosure the term “user”, “subscriber”“consumer” or “customer” should be understood to refer to a user of anapplication or applications as described herein and/or a consumer ofdata supplied by a data provider. By way of example, and not limitation,the term “user” or “subscriber” can refer to a person who receives dataprovided by the data or service provider over the Internet in a browsersession, or can refer to an automated software application whichreceives the data and stores or processes the data.

Those skilled in the art will recognize that the methods and systems ofthe present disclosure may be implemented in many manners and as suchare not to be limited by the foregoing exemplary embodiments andexamples. In other words, functional elements being performed by singleor multiple components, in various combinations of hardware and softwareor firmware, and individual functions, may be distributed among softwareapplications at either the client level or server level or both. In thisregard, any number of the features of the different embodimentsdescribed herein may be combined into single or multiple embodiments,and alternate embodiments having fewer than, or more than, all of thefeatures described herein are possible.

Functionality may also be, in whole or in part, distributed amongmultiple components, in manners now known or to become known. Thus,myriad software/hardware/firmware combinations are possible in achievingthe functions, features, interfaces and preferences described herein.Moreover, the scope of the present disclosure covers conventionallyknown manners for carrying out the described features and functions andinterfaces, as well as those variations and modifications that may bemade to the hardware or software or firmware components described hereinas would be understood by those skilled in the art now and hereafter.

Furthermore, the embodiments of methods presented and described asflowcharts in this disclosure are provided by way of example in order toprovide a more complete understanding of the technology. The disclosedmethods are not limited to the operations and logical flow presentedherein. Alternative embodiments are contemplated in which the order ofthe various operations is altered and in which sub-operations describedas being part of a larger operation are performed independently.

While various embodiments have been described for purposes of thisdisclosure, such embodiments should not be deemed to limit the teachingof this disclosure to those embodiments. Various changes andmodifications may be made to the elements and operations described aboveto obtain a result that remains within the scope of the systems andprocesses described in this disclosure.

What is claimed is:
 1. A method comprising: retrieving a plurality ofe-mail messages associated with a user; parsing the plurality of e-mailmessages to identify a set of merchandise items present within theplurality of e-mail messages; associating the set of merchandise itemswith the user in an item database; receiving a request for an itemrecommendation from the user; identifying one or more recommended itemsassociated with the user in the item database responsive to the request;and transmitting the recommended items to the user for display.
 2. Themethod of claim 1 wherein identifying one or more recommended itemsassociated with the user in the item database responsive to the requestcomprises: retrieving a list of candidate items and a list of useritems, the list of user items retrieved from the item database;filtering the list of candidate items to generate a list of filtereditems, the list of filtered items excluding the list of user items;identifying a list of supplemental items based on user preferences; andcombining the list of candidate items and list of supplemental items asthe one or more recommended items.
 3. The method of claim 2 furthercomprising: displaying the one or more recommended items at a userdisplay; detecting a user interaction with one of the recommended items;and updating the user preferences based on the detected userinteraction.
 4. The method of claim 1 wherein identifying one or morerecommended items associated with the user in the item databaseresponsive to the request comprises: retrieving a style guide, the styleguide comprising a structured listing of products associated with amerchant; detecting one or more seasonal keywords within the styleguide; querying the item database using the one or more seasonalkeywords and retrieving a set of relevant items associated with the oneor more seasonal keywords; filtering the set of relevant items based onthe items associated with the user stored in the item database; andidentifying the filtered set of relevant items as the one or morerecommended items.
 5. The method of claim 4 wherein displaying the setof relevant items on a user device comprises displaying the set ofrelevant items on a virtual model.
 6. The method of claim 1 whereinidentifying one or more recommended items associated with the user inthe item database responsive to the request comprises: receiving arequest for an outfit from the user; retrieving a preference vectorassociated with the user, the preference vector including a plurality ofcategories; generating a first matrix of items based on a selectedcategory from the plurality of categories; displaying the first matrixof items on a user device; updating the preference vector in response toa user interaction with the first matrix of items; generating a secondmatrix of items based on the updated preference vector and the firstmatrix of items; and displaying the second matrix of items on a userdevice.
 7. The method of claim 1 wherein identifying one or morerecommended items associated with the user in the item databaseresponsive to the request comprises: receiving a partial outfit requestfrom the user, the partial outfit request comprising a set of categoriesand at least one item associated with each category; identifying one ormore missing categories within the partial outfit request; retrieving aset of candidate items for each of the one or more missing categoriesbased on a user preference vector; and displaying the set of candidateitems for each of the one or more missing categories.
 8. The method ofclaim 1 wherein identifying one or more recommended items associatedwith the user in the item database responsive to the request comprises:receiving an item from the user; identifying a known use for the item;identifying at least one category associated with the known use;retrieving a set of items associated with the at least one category; andidentifying the set of items as the one or more recommended items. 9.The method of claim 8 wherein a known use comprises an activityassociated with the category associated with the item.
 10. The method ofclaim 1 wherein identifying one or more recommended items associatedwith the user in the item database responsive to the request comprises:retrieving a weather forecast, the weather forecast including a type ofweather; accessing a user item collection within the item database,wherein the user item collection includes one or more items associatedwith a type of weather; and displaying an item in the user itemcollection upon determining that the item is associated with the type ofweather included in the weather forecast.
 11. An apparatus comprising:one or more processors; and a non-transitory memory storingcomputer-executable instructions therein that, when executed by theprocessor, cause the apparatus to perform the operations of: retrievinga plurality of e-mail messages associated with a user; parsing theplurality of e-mail messages to identify a set of merchandise itemspresent within the plurality of e-mail messages; associating the set ofmerchandise items with the user in an item database; receiving a requestfor an item recommendation from the user; identifying one or morerecommended items associated with the user in the item databaseresponsive to the request; and transmitting the recommended items to theuser for display.
 12. The apparatus of claim 11 wherein identifying oneor more recommended items associated with the user in the item databaseresponsive to the request comprises: retrieving a list of candidateitems and a list of user items, the list of user items retrieved fromthe item database; filtering the list of candidate items to generate alist of filtered items, the list of filtered items excluding the list ofuser items; identifying a list of supplemental items based on userpreferences; and combining the list of candidate items and list ofsupplemental items as the one or more recommended items
 13. Theapparatus of claim 12 wherein the instructions further cause theapparatus to perform the operations of: displaying the one or morerecommended items at a user display; detecting a user interaction withone of the recommended items; and updating the user preferences based onthe detected user interaction.
 14. The apparatus of claim 11 whereinidentifying one or more recommended items associated with the user inthe item database responsive to the request comprises: retrieving astyle guide, the style guide comprising a structured listing of productsassociated with a merchant; detecting one or more seasonal keywordswithin the style guide; querying the item database using the one or moreseasonal keywords and retrieving a set of relevant items associated withthe one or more seasonal keywords; filtering the set of relevant itemsbased on the items associated with the user stored in the item database;and identifying the filtered set of relevant items as the one or morerecommended items.
 15. The apparatus of claim 14 wherein displaying theset of relevant items on a user device comprises displaying the set ofrelevant items on a virtual model
 16. The apparatus of claim 11 whereinidentifying one or more recommended items associated with the user inthe item database responsive to the request comprises: receiving arequest for an outfit from the user; retrieving a preference vectorassociated with the user, the preference vector including a plurality ofcategories; generating a first matrix of items based on a selectedcategory from the plurality of categories; displaying the first matrixof items on a user device; updating the preference vector in response toa user interaction with the first matrix of items; generating a secondmatrix of items based on the updated preference vector and the firstmatrix of items; and displaying the second matrix of items on a userdevice.
 17. The apparatus of claim 11 wherein identifying one or morerecommended items associated with the user in the item databaseresponsive to the request comprises: receiving a partial outfit requestfrom the user, the partial outfit request comprising a set of categoriesand at least one item associated with each category; identifying one ormore missing categories within the partial outfit request; retrieving aset of candidate items for each of the one or more missing categoriesbased on a user preference vector; and displaying the set of candidateitems for each of the one or more missing categories.
 18. The apparatusof claim 11 wherein identifying one or more recommended items associatedwith the user in the item database responsive to the request comprises:receiving an item from the user; identifying a known use for the item;identifying at least one category associated with the known use;retrieving a set of items associated with the at least one category; andidentifying the set of items as the one or more recommended items. 19.The apparatus of claim 18 wherein a known use comprises an activityassociated with the category associated with the item.
 20. The apparatusof claim 11 wherein identifying one or more recommended items associatedwith the user in the item database responsive to the request comprises:retrieving a weather forecast, the weather forecast including a type ofweather; accessing a user item collection within the item database,wherein the user item collection includes one or more items associatedwith a type of weather; and displaying an item in the user itemcollection upon determining that the item is associated with the type ofweather included in the weather forecast.